package com.gofaraway.service.左神算法课;

import static com.gofaraway.service.左神算法课.Code02_Sort1.quiteSort;

/**
 * 对数器 验证自己的算法结果
 *
 * @author ChenPeng
 * @Date 2024/12/22 18:13
 */
public class Code03_Comp {

    /**
     * 验证自己排序算法的结果
     * temp 1： 实现一个 输出随机数组的函数
     */
    /**
     * 随机生成一个数组
     *
     * @param maxLen   数组的最大长度
     * @param maxValue 数组元素的最大值
     * @return
     */
    public static int[] lenRandomValueRandomArr(int maxLen, int maxValue) {
        int len = (int) (Math.random() * maxLen);
        int[] arr = new int[len];

        for (int i = 0; i < arr.length; i++) {
            int value = (int) (Math.random() * maxValue);
            arr[i] = value;
        }
        return arr;
    }


    /**
     * 判断数组是否有序
     *
     * @param arr
     * @return
     */
    public static boolean isSorted(int[] arr) {
        if (arr.length < 2) {
            return true;
        }
        int maxValue = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < maxValue) {
                return false;
            }
        }
        return true;
    }

    /**
     * 复制当前数组
     *
     * @param arr
     * @return
     */
    public static int[] copyArr(int[] arr) {
        int[] ars = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            ars[i] = arr[i];
        }
        return ars;
    }


    public static void main(String[] args) {
        int maxLen = 10;
        int maxValue = 100;
        //测试次数
        int testCount = 100000;

        for (int i = 0; i < testCount; i++) {
            int[] arr = lenRandomValueRandomArr(maxLen, maxValue);
//            int[] ars = copyArr(arr);
            quiteSort(arr);
            if (!isSorted(arr)) {
                System.out.println("排序算法实现错了！");
                System.out.println();
                for (int j = 0; j < arr.length; j++) {
                    System.out.print(arr[i] + " ");
                }
                break;
            }
        }
    }

}

